#include "stm32f10x.h"                  // Device header
#include "delay.h"

void Motor_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7|GPIO_Pin_8 | GPIO_Pin_9;    //PA4,PA5,PA6,PA7控制步进驱动引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
}


//1相励磁函数，A-B-C-D    

void Motor_One(uint16_t speed)
{
	GPIO_SetBits(GPIOB,GPIO_Pin_6);
	GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_7);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_8 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_8);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_9);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7 | GPIO_Pin_8);	
	delay_ms(speed);

}



//2相励磁函数   AB-BC-CD-DA

void Motor_two(uint16_t speed)
{	
	GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);
	GPIO_ResetBits(GPIOB,GPIO_Pin_8 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6| GPIO_Pin_7);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_6);
	GPIO_ResetBits(GPIOB,GPIO_Pin_7| GPIO_Pin_8);	
	delay_ms(speed);

	
}


//1.2混合励磁函数  A-AB-B-BC-C-CD-D-DA

void Motor_one_two(uint16_t speed)
{
	GPIO_SetBits(GPIOB,GPIO_Pin_6);
	GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);
	GPIO_ResetBits(GPIOB,GPIO_Pin_8 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_7);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_8 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_8);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7 | GPIO_Pin_9);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6 | GPIO_Pin_7);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_9);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7 | GPIO_Pin_8);	
	delay_ms(speed);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_6);
	GPIO_ResetBits(GPIOB,GPIO_Pin_7 | GPIO_Pin_8);	
	delay_ms(speed);
}
